package com.atguigu.gmall.cart.service;

import com.atguigu.gmall.model.cart.CartInfo;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * @author lsj
 * @create 2021-08-26 10:15
 */
public interface CartService {

    /**
     * 根据请求带来的信息，决定使用
     *   用户购物车：  cart:info:用户id
     *   临时购物车：  cart:info:userTempId
     * @param request
     * @return
     */
    String determinCartKey(HttpServletRequest request);


    /**
     * 获取用户购物车用的key
     * @param request
     * @return
     */
    String userCartKey(HttpServletRequest request);

    /**
     * 获取临时购物车用的key
     * @param request
     * @return
     */
    String tempCartKey(HttpServletRequest request);
    /**
     * 给购物车中添加指定的商品
     * @param key
     * @param skuId
     * @param skuNum
     * @return
     */
    CartInfo addToCart(String key, Long skuId, Integer skuNum);

    List<CartInfo> listCart(String userKey, String userTempKey);

    void clearCart(String key);


    /**
     * 购物车商品选中
     * @param key
     * @param skuId
     * @param checked
     */
    void checkCartItem(String key, Long skuId, Integer checked);

    /**
     * 移除购物车中的商品
     * @param key
     * @param skuId
     */
    void deleteCartItem(String key, Long skuId);

    List<CartInfo> listCheckCartInfo(String key);

    /**
     * 批量删除购物项
     * @param key
     * @param skuIds
     */
    void deleteCartItemBatch(String key, List<String> skuIds);
}
